package com.atguigu;


/*	八锁模式
 * 1、两个都是同步方法  得到Iphone 得到android   由上到下的执行，先得到iphone.
 * 2、iPhone睡400,得到Iphone 得到android  synchronized 由于都是同步方法，都是this的锁，锁住一个 
 *    就全都锁住了。
 * 3、增加普通方法，sayHello    先打印sayHello，在打印得到Iphone。
 * 4、新增一部手机              先打印android，再打印Iphone，因为这个两个对象，锁的是同步代码块，跟两个对象没关系.
 * 5、两个静态方法，一部手机      先打印Iphone ，再打印android
 * 6、两个静态方法，两部手机      先打印Iphone ，再打印android
 * 7、一个静态，一个手机            android静态，先打印android,iphone静态，也是先打印android
 * 8、一个静态，两部手机            先打印android，再打印iphone
 *
 */


public class ThreadDomen {

	public static void main(String[] args) {
		final Phone phone = new Phone();
		final Phone phone2 = new Phone();
		
		new Thread(new Runnable() {
			
			@Override
			public void run() {
				phone.getIphone();
			}
		}, "AA").start();
		
		
		new Thread(new Runnable() {
			
			@Override
			public void run() {
				//phone.sayHello(); 会先打印这个的
				//phone.getAndroid();
				//phone.sayHello(); 如果这个方法在 getAndroid后面的话，
				//要等到上面的方法只想完事，才会执行这个方法
				phone2.getAndroid();
				
			}
		}, "BB").start();
		
	}
}

class Phone{
	
	public static  synchronized void getIphone(){
		try {
			Thread.sleep(400);
		} catch (InterruptedException e) {
			e.printStackTrace();
		}
		System.out.println("得到Iphone");
	}
	
	public  synchronized void getAndroid(){
		System.out.println("得到android");
	}
	
	public void sayHello(){
		System.out.println("sayHello");
	}
	
}